package com.itheima.book.mapper;

import com.itheima.book.pojo.entity.Book;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import java.util.List;

/**
 * @author 86178
 * @description 针对表【book】的数据库操作Mapper
 * @createDate 2025-04-20 18:34:28
 * @Entity com.itheima.book.pojo.entity.Book
 */
@Mapper
public interface BookMapper extends BaseMapper<Book> {

    /**
     * 分页查询图书列表
     * @param page 分页参数
     * @param searchQuery 搜索关键词
     * @param sortBy 排序方式
     * @return 分页结果
     */
    IPage<Book> selectBookPage(IPage<Book> page, @Param("searchQuery") String searchQuery, @Param("sortBy") String sortBy);

    /**
     * 查询热门书籍
     */
    List<Book> selectHotBooks();

    /**
     * 查询用户发布的书籍总数
     */
    int selectUserBookCount(@Param("sellerId") Long sellerId, @Param("searchQuery") String searchQuery);

    /**
     * 查询用户发布的书籍列表
     */
    List<Book> selectUserBookList(
        @Param("sellerId") Long sellerId,
        @Param("offset") int offset,
        @Param("pageSize") int pageSize,
        @Param("searchQuery") String searchQuery,
        @Param("sortBy") String sortBy
    );

    /**
     * 查询总记录数
     */
    int selectTotalCount(@Param("searchQuery") String searchQuery);

    /**
     * 查询书籍列表
     */
    List<Book> selectBookList(
        @Param("offset") int offset,
        @Param("pageSize") int pageSize,
        @Param("searchQuery") String searchQuery,
        @Param("sortBy") String sortBy
    );

    /**
     * 根据ID查询
     */
    Book selectById(@Param("id") Long id);

    /**
     * 新增书籍
     */
    int insert(Book book);

    /**
     * 更新书籍
     */
    int update(Book book);

    /**
     * 删除书籍
     */
    int deleteById(@Param("id") Long id);
}